<?php

/*
 * Script envia emails pendientes Diosas del Placer.
 * @Date: 01/07/2013
 * @Autor: Inicial.CL
 */

//***********************************************************************************
// CONSTANTES
//***********************************************************************************
define("SERVIDOR", "localhost");
define("USUARIO", "diosas_root");
define("PASSWORD", "qpwozmxn.2013");
define("BASE_DATOS", "diosas_ddp");

//include '/SendGrid_loader.php';
//include '/var/www/demo/protected/AppCode/SendGrid_loader.php';

//***********************************************************************************
// LOG
//***********************************************************************************
$log = "";

//***********************************************************************************
// FUNCIONES
//***********************************************************************************
function ejecutaQuery($query) {
    $conn = mysql_connect(SERVIDOR, USUARIO, PASSWORD);
    mysql_select_db(BASE_DATOS, $conn);
    $res = mysql_query($query, $conn) or die(mysql_error());
    mysql_close($conn);
    return $res;
}

function writeln($txt, &$log) {
    $log .= $txt . "\n";
    echo $txt . "\n";
}

function actualizarLog($log) {
    $log = "\n" . $log;
    $log .= "******************************************************************\n";
    $basePath = dirname(__FILE__);
    @$fp = fopen($basePath . "/log_envio_mail.txt", "a");
    if ($fp) {
        fputs($fp, $log);
        fclose($fp);
    }
}

function getCorreosSinEnviar() {
    $res = ejecutaQuery("SELECT
                            id,
                            titulo,
                            mensaje,
                            para,
                            cc,
                            cco,
                            enviado,
                            fechaRegistro,
                            fechaEnvio
                        FROM 
                            correo
                        WHERE
                            enviado=0");
    $arrEmail = array();
    while ($row = mysql_fetch_array($res)) {
        $oEmail = new Email();
        $oEmail->setId($row["id"]);
        $oEmail->setTitulo($row["titulo"]);
        $oEmail->setMensaje($row["mensaje"]);
        $oEmail->setPara($row["para"]);
        $oEmail->setCc($row["cc"]);
        $oEmail->setCco($row["cco"]);
        $oEmail->setEnviado($row["enviado"]);
        $oEmail->setFechaRegistro($row["fechaRegistro"]);
        $oEmail->setFechaEnvio($row["fechaEnvio"]);
        $arrEmail[] = $oEmail;
    }
    return $arrEmail;
}

//***********************************************************************************
// MAIN
//***********************************************************************************

try {
    writeln("INICIO  [" . date("d/m/Y H:i:s") . " Hrs]", $log);

    $arrEmail = getCorreosSinEnviar();
    $idEnviado = "";
    if (count($arrEmail) > 0) {
        foreach ($arrEmail as $oCorreo) {              
            $para = $oCorreo->getPara();
            $titulo = $oCorreo->getTitulo();
            $mensaje = $oCorreo->getMensaje();
            $cabeceras = "MIME-Version: 1.0" . "\r\n";
            $cabeceras .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
            $cabeceras .= "From: Diosas del Placer <no-responder@diosasdelplacer.cl>" . "\r\n";
            $cabeceras .= "Bcc: ".$oCorreo->getCco()."" . "\r\n";
            
            $exito = mail($para, $titulo, $mensaje, $cabeceras);
            if ($exito) {
                $idEnviado .= $idEnviado == "" ? $oCorreo->getId() : "," . $oCorreo->getId();
                writeln("EMAIL ENVIADO A " . $oCorreo->getPara() . "  [" . date("d/m/Y H:i:s") . " Hrs] OK", $log);
            } else {
                writeln("EMAIL NO ENVIADO " . $oCorreo->getPara() . "  [" . date("d/m/Y H:i:s") . " Hrs] KO", $log);
            }
            
//            $sendgrid = new SendGrid("aubilla", "Diosas.2013");
//            $mail = new SendGrid\Mail();
//            $mail->
//                addTo($oCorreo->getPara())->
//                setFrom("no-responder@diosasdelplacer.cl")->
//                setFromName("Diosas del Placer")->
//                setBcc($oCorreo->getCco())->
//                setSubject($oCorreo->getTitulo())->
//                setHtml($oCorreo->getMensaje());
//            $exito = $sendgrid->web->send($mail); 
//            if (strpos($exito, "success")) {
//                $idEnviado .= $idEnviado == "" ? $oCorreo->getId() : "," . $oCorreo->getId();
//                writeln("EMAIL ENVIADO A " . $oCorreo->getPara() . "  [" . date("d/m/Y H:i:s") . " Hrs] OK", $log);
//            } else {
//                writeln("EMAIL ENVIADO A " . $oCorreo->getPara() . "  [" . date("d/m/Y H:i:s") . " Hrs] KO", $log);
//            }
        }
        if ($idEnviado != "") {
            ejecutaQuery("UPDATE correo SET enviado=1, fechaEnvio=now() WHERE id IN($idEnviado)");
        }
    } else {
        writeln("NO HAY EMAILS QUE ENVIAR  [" . date("d/m/Y H:i:s") . " Hrs]", $log);
    }

    writeln("TERMINO [" . date("d/m/Y H:i:s") . " Hrs]", $log);
    actualizarLog($log);
} catch (Exception $ex) {
    writeln("ERROR : " . $ex->getMessage() . " [" . date("d/m/Y H:i:s") . " Hrs]", $log);
}

class Email {

    private $id;
    private $titulo;
    private $mensaje;
    private $para;
    private $cc;
    private $cco;
    private $enviado;
    private $fechaRegistro;
    private $fechaEnvio;

    public function getId() {
        return $this->id;
    }

    public function setId($id) {
        $this->id = $id;
    }

    public function getTitulo() {
        return $this->titulo;
    }

    public function setTitulo($titulo) {
        $this->titulo = $titulo;
    }

    public function getMensaje() {
        return $this->mensaje;
    }

    public function setMensaje($mensaje) {
        $this->mensaje = $mensaje;
    }

    public function getPara() {
        return $this->para;
    }

    public function setPara($para) {
        $this->para = $para;
    }

    public function getCc() {
        return $this->cc;
    }

    public function setCc($cc) {
        $this->cc = $cc;
    }

    public function getCco() {
        return $this->cco;
    }

    public function setCco($cco) {
        $this->cco = $cco;
    }

    public function getEnviado() {
        return $this->enviado;
    }

    public function setEnviado($enviado) {
        $this->enviado = $enviado;
    }

    public function getFechaRegistro() {
        return $this->fechaRegistro;
    }

    public function setFechaRegistro($fechaRegistro) {
        $this->fechaRegistro = $fechaRegistro;
    }

    public function getFechaEnvio() {
        return $this->fechaEnvio;
    }

    public function setFechaEnvio($fechaEnvio) {
        $this->fechaEnvio = $fechaEnvio;
    }

}

?>

